#modulo para el envio de mail de agradecimiento por la compra
# -*- coding: utf-8 -*-

##import consultasBD
##import utiles
##from mktsend import Sender
##
##username = 'sussan'
##password = 'suSSan42'
##reporteTo = ['ceportela@gmail.com','sussanboutique@gmail.com']
##
##def transmitir(lista):
##    datosSucursal = utiles.datosSucursal()
##    numeroSucursal = datosSucursal[0]
##    nombreSucursal = datosSucursal[1]
##    fecha = utiles.obtenerFecha("d-m-Y")
##    f = open("modelos\\agradecimiento.html","r")
##    modelo = f.read()
##    f.close()
##    s = Sender(username, password)
##    correctos = 0
##    erroneos = 0
##    listaEnviadosOK = "<ul>\n"
##    listaEnviadosMAL = "<ul>\n"
##    listaNegra = []
##    erroresacumulados = ""
##    for item in lista:
##        email = item[0]
##        nombre = item[1]
##        idcliente = item[2]
##        to = []
##        to.append(unicode(nombre+" <"+email+">",'utf-8'))
##
##        subject = unicode('GRACIAS POR TU COMPRA!!!','utf-8')
##        text = unicode('Desde Sussan Boutique queremos agradecerte el habernos visitado')
##        html = modelo
##        html = html.replace("MINOMBRE",nombre)
##        html = html.replace("MIFECHA",str(fecha))
##        html = unicode(html)
##        resultado = s.send(to,subject,text,html) # Esta linea debe devolver un "OK"
##        if resultado=='"OK"':
##            correctos+= 1
##            listaEnviadosOK+= "<li>"+nombre+" "+email+"</li>\n"
##        else:
##            erroneos+= 1
##            listaEnviadosMAL+= "<li>"+nombre+" "+email+"</li>\n"
##            erroresacumulados+= "<br>"+nombre+" "+email+" :<br>"+resultado+"\n"
##            print nombre,email,":"
##            print resultado
##            if "<Code>MessageRejected</Code>" in resultado and \
##               "<Message>Address blacklisted.</Message>" in resultado:
##                listaNegra.append((idcliente,nombre,email))
##
##    listaEnviadosOK+='</ul><br>\n'
##    listaEnviadosMAL+='</ul><br>\n'
##        
##    print "Agradecimientos transmitidos:"
##    print "-Correctos: ",correctos
##    print "-Erroneos: ",erroneos
##
##    html = "AGRADECIMIENTOS TRANSMITIDOS "+nombreSucursal+": <br>\n"
##    html+= "-Correctos: "+str(correctos)+"<br>\n"
##    html+= "-Erroneos: "+str(erroneos)+"<br><br>\n"
##    html+= "DETALLE:"+"<br><br>\n"
##    html+= "Enviados:<br>"+listaEnviadosOK
##    if erroresacumulados!="":
##        html+= "No Enviados:<br>"+listaEnviadosMAL+"<br>\n"
##        html+= erroresacumulados
##    if listaNegra!=[]:
##        html+= "Lista negra:<br>\n"
##        for item in listaNegra:
##            html+= "-"+item[2]+"<br>\n"
##
##    to = []
##    for item in reporteTo:
##        to.append(unicode(item,'utf-8'))
##    texto = "Agradecimientos desde "+nombreSucursal+" "+fecha
##    subject = unicode(texto,'utf-8')
##    text = unicode('Agradecimientos enviados')
##    html = unicode(html)
##    resultado = s.send(to,subject,text,html) # Esta linea debe devolver un "OK"
##    print "Reporte de agradecimientos",resultado
##    print "FIN TRANSMISION AGRADECIMIENTOS"
##
##    if listaNegra != []:
##        #procesar cliente en lista negra
##        try:
##            consultasBD.begin()
##            for item in listaNegra:
##                idcliente = item[0]
##                SQL = "UPDATE cliente SET listanegra='1' WHERE idcliente='%s'" % (idcliente)
##                consultasBD.ordenCrudaSinCommit(SQL)
##            consultasBD.commit()
##        except:
##            consultasBD.rollback()                                         
##
##def enviar(fecha,test=0):
##    fechaVentas = utiles.formatear_fecha_date3(fecha)
##    fecha1 = fechaVentas+" 00:00:00"
##    fecha2 = fechaVentas+" 23:59:59"
##    print "Procesando email del",fechaVentas 
##    r1 = "SELECT p2.email,p2.nombre,p2.idcliente "
##    r2 = "FROM "
##    r3 = "   (SELECT DISTINCT p.idcliente "
##    r4 = "    FROM "
##    r5 = "       (SELECT idcliente,SUM(totalsiniva) AS total "
##    r6 = "        FROM ventas "
##    r7 = "        WHERE fecha BETWEEN '"+fecha1+"' AND '"+fecha2+"' "
##    r8 = "        GROUP BY idcliente) AS p "
##    r9 = "    WHERE p.total>0) AS p1, cliente p2 "
##    r0 = "WHERE p2.idcliente=p1.idcliente AND p2.listanegra='0'"
##    consultaSQL = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0
##    resultado = consultasBD.ordenCruda(consultaSQL)
##    #eliminar las 2 lineas siguientes cuando se ponga en produccion
##    if test != 0:
##        print resultado
###        resultado = (('dlevental@gmail.com','DIEGO',),)
##        resultado = (('ceportela@gmail.com','Cesar',),)
##    if resultado<>None or resultado<>():
##        listaMail = []
##        for item in resultado:
##            if item[0] == "" or item[0] == None: continue
##            listaMail.append((item[0],item[1],item[2]))
##        print "TRANSMITIENDO AGRADECIMIENTOS"
##        transmitir(listaMail)

#modulo para el envio de mail de agradecimiento por la compra

import consultasBD
import utiles
import os
import servers

# Importamos librerias
import smtplib
import mimetypes
 
# Importamos los modulos necesarios
from email.MIMEMultipart import MIMEMultipart
from email.MIMEImage import MIMEImage
from email.Encoders import encode_base64
from email.mime.text import MIMEText

def transmitir(lista):
    sucursal = int(utiles.getSucursalActiva())-1
    serverName = servers.mailservername[sucursal]
    host= servers.mailhost[sucursal]
    user= servers.mailuser[sucursal]
    password= servers.mailpassword[sucursal]
    port= servers.mailport[sucursal]
    email_from= servers.mailmail[sucursal]
    
    subject="GRACIAS POR TU COMPRA!!!"
    
    html_path= "modelos\\agradecimiento.html"
    miImagen = "imgs\\logosucursal"+str(sucursal+1)+".png"
    image_path= miImagen
    fecha=utiles.obtenerFecha("d-m-Y")

    cont=0
    i=0

    def enviarEmail(email_to,nombre,mensaje=""):
         
        # Creamos el mensaje
        file = open(html_path,"r")
        texto = file.read()
        texto = texto.replace("MINOMBRE",nombre)
        texto = texto.replace("MIFECHA",fecha)
        file.close()

        # Creamos objeto Multipart, quien sera el recipiente que enviaremos
        msg = MIMEMultipart('related')
        msg['From']=email_from
        msg['To']=email_to
        msg['Subject']=subject
        if mensaje != "":
            texto = mensaje
            texto = texto.replace("MINOMBRE",nombre)
        msg_html = MIMEText(texto, 'html')
        msg.attach(msg_html)

        # Adjuntamos Imagen
        file = open(image_path, "rb")
        miimagen = file.read()
        file.close()
        
        attach_image = MIMEImage(miimagen)
        attach_image.add_header('Content-Disposition', 'attachment; filename = "'+image_path+'"')
        msg.attach(attach_image)
        
        # Autenticamos
        print "Autenticando",
        mailServer = smtplib.SMTP(host,port)
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(user,password)

        # Enviamos
        print "Enviando"
        mailServer.sendmail(user, email_to, msg.as_string())
         
        # Cerramos conexion
        #mailServer.quit()        

    novedades = "REPORTE DE e-mail DE AGRADECIMIENTOS<br>"
    novedades+= "Para: MINOMBRE<br><br>"
    
    listaEnviada = '<br><ul>'
    for item in lista:
        email_destinatario = item[0]
        nombre = item[1]
        print email_destinatario,nombre,
        listaEnviada+='<li type="square">'+email_destinatario+' '+nombre+'</li>'

        try:
            enviarEmail(email_destinatario,nombre)
            cont=cont+1
            for delay in xrange(2000000):
                pass
        except:
            print "Error envio mail agradecimiento",email_destinatario,nombre
    
    listaEnviada+='</ul>'

    print "Agradecimientos transmitidos:",cont,
    novedades+= "<br>Agradecimientos transmitidos: "+str(cont)+"<br>"
    novedades+= "Sucursal: "+utiles.datosSucursal()[1]+"<br><br>"+listaEnviada 
    subject="Agradecimientos enviados el "+utiles.getfechatoday(None)
    #enviarEmail("ceportela@gmail.com","Cesar",novedades)
    enviarEmail("sussanboutique@gmail.com","Sussan",novedades)
    print "FIN TRANSMISION AGRADECIMIENTOS"

def enviar(fecha,test=0):
    fechaVentas = utiles.formatear_fecha_date3(fecha)
    print "Procesando email del",fechaVentas 
    r1 = "SELECT email,nombre FROM "
    r2 = "   (SELECT DISTINCT idcliente "
    r3 = "    FROM ventas "
    r4 = "    WHERE fecha LIKE '%"+fechaVentas+"%' AND totalfactura>0) AS p1, "
    r5 = "   cliente AS p2 "
    r6 = "WHERE p1.idcliente=p2.idcliente AND email<>'' AND p2.listanegra<>'1' "
    consultaSQL = r1 + r2 + r3 + r4 + r5 + r6
    resultado = consultasBD.ordenCruda(consultaSQL)
    #eliminar las 2 lineas siguientes cuando se ponga en produccion
    if test != 0:
        #resultado = (('dlevental@gmail.com','DIEGO',),)
        resultado = (('ceportela@gmail.com','Cesar',),)
    if resultado<>None or resultado<>():
        listaMail = []
        for item in resultado:
            listaMail.append((item[0],item[1]))
        print "TRANSMITIENDO AGRADECIMIENTOS"
        transmitir(listaMail)
